<?php
/**
 * 清理未使用的前端文件
 */

// 前端目录
$frontendDir = __DIR__ . '/../../merchant';
$backupDir = __DIR__ . '/backups/frontend_cleanup_' . date('Y-m-d_H-i-s');

if (!is_dir($backupDir)) {
    mkdir($backupDir, 0755, true);
}

echo "📁 前端目录: $frontendDir\n";
echo "📦 备份目录: $backupDir\n";

// 需要清理的文件列表（相对于 merchant 目录）
$filesToClean = [
    // 未使用的页面
    'src/views/site/Document.vue',
    'src/views/console/Detail.vue',
    
    // 冗余的入口文件
    'src/main-enhanced.js',
    
    // 未使用的资产文件
    'src/assets/bg.png',
    'src/assets/logo.svg',
    
    // 构建产物中的遗留文件
    'dist/归档.zip',
];

$cleanedFiles = [];

foreach ($filesToClean as $file) {
    $sourcePath = $frontendDir . '/' . $file;
    
    if (file_exists($sourcePath)) {
        echo "\n🔍 处理文件: $file\n";
        
        // 创建备份目录结构
        $backupSubDir = dirname($backupDir . '/' . $file);
        if (!is_dir($backupSubDir)) {
            mkdir($backupSubDir, 0755, true);
        }
        
        // 备份文件
        $backupPath = $backupDir . '/' . $file;
        if (copy($sourcePath, $backupPath)) {
            echo "✅ 备份成功: $file\n";
            
            // 删除原文件
            if (unlink($sourcePath)) {
                echo "✅ 删除成功: $file\n";
                $cleanedFiles[] = $file;
            } else {
                echo "❌ 删除失败: $file\n";
            }
        } else {
            echo "❌ 备份失败: $file\n";
        }
    } else {
        echo "⚠️  文件不存在: $file\n";
    }
}

// 清理整个 dist 目录（除了 index.html 和 favicon.ico）
echo "\n🔍 清理构建产物目录...\n";
$distDir = $frontendDir . '/dist';
if (is_dir($distDir)) {
    $distBackupDir = $backupDir . '/dist';
    if (!is_dir($distBackupDir)) {
        mkdir($distBackupDir, 0755, true);
    }
    
    // 备份整个 dist 目录
    $distBackupCmd = "cp -r '$distDir' '$distBackupDir/' 2>/dev/null";
    exec($distBackupCmd, $output, $returnCode);
    
    if ($returnCode === 0) {
        echo "✅ dist 目录备份完成\n";
        
        // 删除 dist 目录中的所有文件，除了 index.html 和 favicon.ico
        $files = glob($distDir . '/*');
        foreach ($files as $file) {
            if (is_file($file) && basename($file) !== 'index.html' && basename($file) !== 'favicon.ico') {
                unlink($file);
                echo "✅ 删除文件: " . basename($file) . "\n";
            } elseif (is_dir($file) && basename($file) !== 'assets') {
                // 删除非 assets 目录
                $deleteCmd = "rm -rf '$file' 2>/dev/null";
                exec($deleteCmd, $output, $returnCode);
                if ($returnCode === 0) {
                    echo "✅ 删除目录: " . basename($file) . "\n";
                }
            }
        }
        
        $cleanedFiles[] = 'dist/* (保留 index.html 和 favicon.ico)';
    } else {
        echo "⚠️  dist 目录备份失败\n";
    }
}

echo "\n🎉 前端文件清理完成！\n";
echo "📊 清理文件统计:\n";
echo "- 总处理文件数: " . count($filesToClean) . " + dist 目录\n";
echo "- 成功清理文件数: " . count($cleanedFiles) . "\n";

// 生成恢复脚本
$restoreScript = $backupDir . '/restore_files.php';
$restoreContent = "<?php
/**
 * 恢复被清理的前端文件
 * 运行此脚本可以恢复所有被清理的文件
 */

\$backupDir = __DIR__;
\$frontendDir = __DIR__ . '/../../merchant';
\$filesToRestore = " . var_export($cleanedFiles, true) . ";

foreach (\$filesToRestore as \$file) {
    // 跳过特殊的 dist 清理标记
    if (strpos(\$file, 'dist/*') !== false) {
        // 恢复整个 dist 目录
        \$distBackup = \$backupDir . '/dist';
        \$distTarget = \$frontendDir . '/dist';
        
        if (is_dir(\$distBackup)) {
            \$restoreCmd = \"cp -r '\$distBackup/'* '\$distTarget/' 2>/dev/null\";
            exec(\$restoreCmd, \$output, \$returnCode);
            if (\$returnCode === 0) {
                echo \"✅ 恢复 dist 目录完成\\n\";
            } else {
                echo \"⚠️  dist 目录恢复失败\\n\";
            }
        }
        continue;
    }
    
    \$sourcePath = \$backupDir . '/' . \$file;
    \$targetPath = \$frontendDir . '/' . \$file;
    
    if (file_exists(\$sourcePath)) {
        // 创建目标目录
        \$targetDir = dirname(\$targetPath);
        if (!is_dir(\$targetDir)) {
            mkdir(\$targetDir, 0755, true);
        }
        
        if (copy(\$sourcePath, \$targetPath)) {
            echo \"✅ 恢复成功: \$file\\n\";
        } else {
            echo \"❌ 恢复失败: \$file\\n\";
        }
    } else {
        echo \"⚠️  备份文件不存在: \$file\\n\";
    }
}

echo \"\\n🎉 前端文件恢复完成！\\n\";
";

file_put_contents($restoreScript, $restoreContent);
echo "🔄 恢复脚本已生成: restore_files.php\n";

// 生成清理清单
$cleanupList = $backupDir . '/cleanup_summary.md';
$cleanupContent = "# 前端文件清理清单

## 清理时间
" . date('Y-m-d H:i:s') . "

## 备份目录
$backupDir

## 清理文件列表
";

foreach ($cleanedFiles as $file) {
    $cleanupContent .= "- ✅ $file\n";
}

$cleanupContent .= "
## 清理原因
1. 未在路由中引用的页面文件
2. 冗余的入口文件（与 main.js 重复）
3. 未在任何代码中使用的资产文件
4. 构建产物中的遗留文件和压缩包
5. 减少项目体积，提高构建速度

## 后续步骤
1. 重新构建前端项目:
   ```bash
   cd merchant
   npm run build
   ```

2. 验证所有功能正常:
   - 访问首页: http://localhost:5173
   - 测试登录/注册功能
   - 验证控制台页面正常加载
   - 检查会员中心功能

## 恢复方法
如需恢复这些文件，请运行:
```bash
php $restoreScript
```

## 注意事项
- 清理前已进行完整备份
- 清理的文件可以在备份目录中找到
- 恢复脚本可以一键恢复所有文件
- 建议在恢复后重新构建项目
";

file_put_contents($cleanupList, $cleanupContent);
echo "📋 清理清单已生成: cleanup_summary.md\n";